One of the major contributions of computers and software to people's daily lives was the automation of widely used tasks such as word processing, spreadsheet calculations, and diagramming. Not only did these applications automate and make various tasks usable by anyone, but they also added many new capabilities in manipulating a wide range of documents and data. Until recently, a typical environment included a standalone or networked computer with a particular application installed on it. Thus, the user was working with an application installed and executed on their local computer using data also stored locally. A recent trend in providing the computing capabilities without the burden of having a full scale application installed on the user's computer is enabling users to perform the computerized tasks through web access. In a typical web service, the user may utilize a hosted service to create new documents, manipulate existing ones, and perform many other computing tasks through a networked medium such as the Internet.
In a typical web service, a front end server may make available relatively large files which may be requested via byte range requests. The files may be stored externally (database, remote storage, etc.) and cached at a front end server when requested by a client. File content may be served to a requesting client as the file is being copied into the cache since copying the entire file can take amount of significant time. A challenge may be presented if multiple clients concurrently request byte ranges in the same large file. If the web server attempts to fetch the file multiple times from the external storage, the operation(s) may place unnecessary load on the external storage and waste local disk space on the web server. Alternatively, clients may have to wait their turn slowing the service speed.